#include "../games/globale.h" // Fonction et Headers globaux
#include "../games/cls_dialog.h" // Classe de gestion du scenario

/* ----------------------------------------------------
			Constructeur
  ----------------------------------------------------- */
cls_Dialog::cls_Dialog()
{
    debugTrace("Constructeur cls_Dialog");
    this->t_groupePhrase.empty();
}

/* ----------------------------------------------------
			Destructeur
  ----------------------------------------------------- */
cls_Dialog::~cls_Dialog()
{
    debugTrace("Destructeur cls_Dialog");
    this->t_groupePhrase.empty();
}


/* ----------------------------------------------------
			Initialisation
  ----------------------------------------------------- */
int cls_Dialog::Init()
{
    ifstream fileDialog;
    string s_FileLine;
    int oldIdStr=1;
    StrucGroupePhrase objTempo;
    StrucElemPhrase elemTempo;

    fileDialog.open("data/scenario/01/dialog.dat");

    if (fileDialog) // ce test échoue si le fichier n'est pas ouvert
    {
        while(getline(fileDialog, s_FileLine))
        {
            if(s_FileLine != "" && s_FileLine.substr(0, 2) != "//")
            {
                // Si l'on est en présence d'une ligne STR_ (pour les actions)
                if(s_FileLine.substr(0, 4) == "STR_")
                {
                    // Si on a changé de groupe de phrase, on sauve ce groupe
                    if (oldIdStr != atoi(s_FileLine.substr(4, 3).c_str()))
                    {
                        this->t_groupePhrase.push_back(objTempo);
                        objTempo.t_elemPhrase.clear();
                        oldIdStr=atoi(s_FileLine.substr(4, 3).c_str());
                    }
                    // On jaoute la phrase au groupe de phrase
                    elemTempo.st_Libelle=s_FileLine.substr(14);
                    objTempo.t_elemPhrase.push_back(elemTempo);
                }
                debugTrace(s_FileLine.c_str());
            }
        }
        // Quand on sort de la boucle, il en reste toujours un a mettre dans le tableau :))
        this->t_groupePhrase.push_back(objTempo);
    }

    fileDialog.close();

    return RETOK;
}

/* ----------------------------------------------------
			Recherche de correspondance (Code->Chaine)
            Code du syle [#STR_001#]
----------------------------------------------------- */
string cls_Dialog::FindCorrespondance(string valRecherche)
{
string tempo;
int idxLibelle;
    idxLibelle=atoi(valRecherche.substr(6, 3).c_str());
    tempo=this->t_groupePhrase[idxLibelle-1].t_elemPhrase[0].st_Libelle;
    //debugTrace("FIND CORRESPONDANCE");
    return tempo;
}
